// 版权所有2012 Go作者。版权所有。
// 此源代码的使用受BSD样式的约束
// 可以在许可证文件中找到的许可证。

package base

import (
	"os"
	"os/signal"
	"sync"
)

// 当go命令接收到中断信号时，中断关闭。
var Interrupted = make(chan struct{})

// processSignals设置信号处理程序。
func processSignals() {
	sig := make(chan os.Signal, 1)
	signal.Notify(sig, signalsToIgnore...)
	go func() {
		<-sig
		close(Interrupted)
	}()
}

var onceProcessSignals sync.Once

// StartSigHandlers启动信号处理程序。
func StartSigHandlers() {
	onceProcessSignals.Do(processSignals)
}
